package tantan.mokuai4.homework;

import java.io.*;
import java.net.ServerSocket;

public class TheServer {

    public static void main(String[] args) {

//    （1）创建ServerSocket类型的对象并提供端口号；
        ServerSocket ss = null;
        try {
            ss = new ServerSocket(6666);
        } catch (IOException e) {
            e.printStackTrace();
        }
//    （2）等待客户端的连接请求，调用accept()方法；
        try {
            System.out.println("等待客户端的连接...");
            ss.accept();
            System.out.println("客户端连接成功");
        } catch (IOException e) {
            e.printStackTrace();
        }
        //    （3）使用输入输出流进行通信；
//        创建对象输入流与C:\file test\a.txt相关联并读取文件中的对象
        ObjectInputStream ois = null;
        try {
            ois = new ObjectInputStream(new FileInputStream("C:\\file test\\a.txt"));
        } catch (IOException e) {
            e.printStackTrace();
        }
        UserMessage um = null;
        try {
            System.out.println("数据读取中...");
            um = (UserMessage) ois.readObject();
            System.out.println("数据读取成功");
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        System.out.println("um = " + um);
//        判断用户对象信息是否为"admin"和"123456",若是则将UserMessage对象中的类型改为"success"，否则将类型改为"fail"
        if(um.getUser().getUserName().equals("admin") && um.getUser().getPassWord().equals("123456")){
            um.setType("success");
            System.out.println("用户对象信息是否为\"admin\"和\"123456\"");
        }else{
            um.setType("fail");
            System.out.println("用户对象信息不是\"admin\"和\"123456\"");
        }
//        将修改后的用户信息回发给客户
//        创建一个对象输出流与C:\file test\b.txt
        ObjectOutputStream oos = null;
        try {
            oos = new ObjectOutputStream(new FileOutputStream("C:\\file test\\b.txt"));
        } catch (IOException e) {
            e.printStackTrace();
        }
        try {
            oos.writeObject(um);
            System.out.println("数据回发成功");
        } catch (IOException e) {
            e.printStackTrace();
        }
//    （4）关闭Socket；
        if(null != ois){
            try {
                ois.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        if(null != ss){
            try {
                ss.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        if(null != oos){
            try {
                oos.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
